# 创建空列表的两种方式：使用 [] 和 list()
info8 = []
info9 = list()

# 创建一个包含三个元素的列表
info10 = ["张三", "李四", "王五"]
# 查找元素 "王五" 在列表中的索引位置，并将其转换为字符串进行拼接输出，结果为 2
print('王五的下标为' + str(info10.index("王五")))

# 创建一个包含重复元素的列表
info11 = ['python', 'java', 'python', 'php']
# 统计元素 "python" 在列表中出现的次数，输出：2
print(info11.count("python"))

# 在列表末尾添加一个新元素 "python"
info11.append("python")
# 打印添加后的列表
print(info11)
# 再次统计 "python" 的数量，此时应为 3
print(info11.count("python"))

# 在索引位置 1 处插入元素 "c++"，原位置及之后的元素后移
info11.insert(1, "c++")
# 打印插入后的列表
print(info11)

# 定义两个列表
info12 = ["张三", "李四"]
info13 = ["吃饭", "喝水"]
# 将 info13 中的所有元素依次添加到 info12 的末尾（扩展）
info12.extend(info13)
# 打印扩展后的 info12
print(info12)
# info13 本身未改变
print(info13)

# 打印当前 info11 列表
print(info11)
# 移除并返回索引为 0 的元素（即第一个元素）
info11.pop(0)
# 打印删除第一个元素后的列表（重复打印两次）
print(info11)
print(info11)

# 移除列表中第一个匹配 "php" 的元素
info11.remove("php")
# 打印移除后的列表
print(info11)

# 将索引为 2 的元素修改为 "php"
info11[2] = "php"
# 打印修改后的列表
print(info11)

# 将列表中的元素顺序反转
info11.reverse()
# 打印反转后的列表
print(info11)

# 创建一个数字列表
info14 = [1, 5, 4, 6, 8, 2, 3, 7, 9]
# 对列表进行升序排序（从小到大）
info14.sort()
# 打印排序后的列表
print(info14)

# 对列表进行降序排序（从大到小）
info14.sort(reverse=True)
# 打印降序排序后的列表
print(info14)

# 对 info11 列表按元素字符串长度进行升序排序（短的在前）
info11.sort(key=len, reverse=False)
# 打印按长度排序后的列表
print(info11)

# 定义一个二维列表（列表嵌套），每个子列表代表一个人的信息
info15 = [
    ["张三", "18", "功能测试"], 
    ["李四", "20", "自动化测试"], 
    ["王五", "22", ["python", "java"]]
]

# 访问 info15 中第二个子列表（索引为1）的第一个元素，即 "李四"
print(info15[1][0])

# 遍历 info15 中的每一个子列表
for i in info15:
    # 打印每个子列表的第一个元素（即姓名）
    print(i[0])

# 列表转字符串
lst = ["hello", "python", "world"]
result = " ".join(lst)
print(result)  # 输出: hello python world